home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / source / lib / powerd_lib.lha / PowerD_PPC / Val.d < prev    next >
Text File  |  2001-03-26  |  708b  |  39 lines

  1. OPT    PPC,NOEXE,NOSTD
  2.  
  3. PROC Val(s:PTR TO CHAR,n=0)(LONG,LONG)
  4.     DEF    num=0,sign=1
  5.     WHILE s[n]="\t" OR s[n]="\n" OR s[n]=" " DO n++
  6.     IF s[n]="-"
  7.         sign:=-1
  8.         n++
  9.     ENDIF
  10.     IF s[n]="%"                                                        // BINARY number
  11.         n++
  12.         WHILE s[n]="0" OR s[n]="1"
  13.             num<<=1
  14.             num|=s[n]-"0"
  15.             n++
  16.         ENDWHILE
  17.     ELSEIF s[n]="$"                                                // HEXADECIMAL number
  18.         n++
  19.         WHILE s[n]>="0" AND s[n]<="9"
  20.             num<<=4
  21.             num|=s[n]-"0"
  22.         ELSEWHILE s[n]>="a" AND s[n]<="f"
  23.             num<<=4
  24.             num|=s[n]-"a"+10
  25.         ELSEWHILE s[n]>="A" AND s[n]<="F"
  26.             num<<=4
  27.             num|=s[n]-"A"+10
  28.         ALWAYS
  29.             n++
  30.         ENDWHILE
  31.     ELSE                                                                // DECIMAL number
  32.         WHILE s[n]>="0" AND s[n]<="9"
  33.             num*=10
  34.             num+=s[n]-"0"
  35.             n++
  36.         ENDWHILE
  37.     ENDIF
  38. ENDPROC num*sign,n
  39.